/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jprojetocloseup;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Rodrigo Toma
 */
public class RelatorioImportacoes {

    public String TipoRelatorio = "";
    public static Connection con = null;
    public static Connection con2 = null;
    public static Connection con3 = null;
    public static Connection con4 = null;
    public static Connection con5 = null;
    public static Connection con6 = null;
    public static Connection con7 = null;
    public static Connection con8 = null;
    private PdfPTable tableProduto;
    private PdfPTable tableMedico;
    public int valorprogress;

    public void gerarRelatorio(String tipo, String data1, String data2) throws IOException, DocumentException, SQLException, ParseException {
        DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy_HHmmss");
        Date date = new Date();


        con2 = Conexao.getConnetion();
        con3 = Conexao.getConnetion();
        con4 = Conexao.getConnetion();


        Document doc = null;
        OutputStream os = null;
        //cria o documento tamanho A4, margens de 2,54cm
        doc = new Document(PageSize.A4, 40, 40, 40, 40);

        if (tipo == "1") {
            TipoRelatorio = "Relatório de Importações";
        } else {
            TipoRelatorio = "Relatório de Importaçõe Excluídas";
        }
        //cria a stream de saída
        os = new FileOutputStream(new File(".").getAbsolutePath() + "\\Relatorios\\" + TipoRelatorio + "_" + dateFormat.format(date) + ".pdf");


        //associa a stream de saída ao
        PdfWriter.getInstance(doc, os);

        //abre o documento
        doc.open();

        //adiciona o texto ao PDF
        Paragraph p;
        //fonte
        Font f = new Font(Font.FontFamily.COURIER, 16, Font.BOLD);
        Font fmenor = new Font(Font.FontFamily.COURIER, 9, Font.NORMAL);
        Font fmenorParag = new Font(Font.FontFamily.COURIER, 3, Font.NORMAL);
        Font ftotal = new Font(Font.FontFamily.COURIER, 9, Font.BOLD);
        Font flinhaResumido = new Font(Font.FontFamily.COURIER, 10, Font.NORMAL);

        if (tipo == "1") {
            valorprogress = 1;           
            p = new Paragraph("Relatório de Importações");
            doc.add(p);

            p = new Paragraph("________________________________________________________________________");
            doc.add(p);

            PreparedStatement pstQtdeDeLojasDetalhe = con2.prepareStatement(""
                    + "select Associados.id_associados,Associados.razão_social,COUNT(Associados.razão_social) as Prescrições "
                    + "from "
                    + "envio_item "
                    + "join Associados on envio_item.id_filial = Associados.id_associados "
                    + "where "
                    + "envio_item.data >= '" + data1 + "' and envio_item.data <= '" + data2 + "' "
                    + "group by Associados.razão_social,Associados.id_associados order by Prescrições desc ");

            ResultSet rsQtdeDeLojasDetalhe = pstQtdeDeLojasDetalhe.executeQuery();
            valorprogress = 2;
            while (rsQtdeDeLojasDetalhe.next()) {

                String loja = "Nº" + rsQtdeDeLojasDetalhe.getString(1) + " " + rsQtdeDeLojasDetalhe.getString(2) + " Total PX: " + rsQtdeDeLojasDetalhe.getString(3);
                p = new Paragraph(loja, f);
                doc.add(p);

                PreparedStatement pstProdutos = con3.prepareStatement(""
                        + "select produtos.id_produto,produtos.descricao,COUNT(produtos.descricao) as qtdePX "
                        + "from "
                        + "envio_item "
                        + "join Produtos on envio_item.id_produto = produtos.id_produto "
                        + "where "
                        + "envio_item.data >= '" + data1 + "' and envio_item.data <= '" + data2 + "' "
                        + "and id_filial = '" + rsQtdeDeLojasDetalhe.getString(1) + "' "
                        + "group by produtos.descricao,produtos.id_produto order by qtdePX desc ");
                ResultSet rsProdutos = pstProdutos.executeQuery();
                valorprogress = 3;
                while (rsProdutos.next()) {
                    tableProduto = new PdfPTable(3);

                    tableProduto = new PdfPTable(new float[]{0.1f, 0.8f, 0.1f});

                    tableProduto.setWidthPercentage(100.0f);
                    tableProduto.setHorizontalAlignment(Element.ALIGN_LEFT);

                    tableProduto.addCell(new Phrase("ID", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));
                    tableProduto.addCell(new Phrase("Produto", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));
                    tableProduto.addCell(new Phrase("Qtde", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));
                    //adiciona linha do produto                      
                    tableProduto.addCell(new Phrase(rsProdutos.getString(1), FontFactory.getFont(FontFactory.HELVETICA, 8, BaseColor.BLUE)));
                    tableProduto.addCell(new Phrase(rsProdutos.getString(2), FontFactory.getFont(FontFactory.HELVETICA, 8, BaseColor.BLUE)));
                    tableProduto.addCell(new Phrase(rsProdutos.getString(3), FontFactory.getFont(FontFactory.HELVETICA, 8, BaseColor.BLUE)));
                    doc.add(tableProduto);

                    //subselect para medicos
                    tableMedico = new PdfPTable(5);

                    tableMedico = new PdfPTable(new float[]{0.6f, 0.1f, 0.1f, 0.1f, 0.1f});

                    tableMedico.setWidthPercentage(100.0f);
                    tableMedico.setHorizontalAlignment(Element.ALIGN_LEFT);

                    tableMedico.addCell(new Phrase("Nome", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));
                    tableMedico.addCell(new Phrase("CRM", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));
                    tableMedico.addCell(new Phrase("Estado", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));
                    tableMedico.addCell(new Phrase("Status", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));
                    tableMedico.addCell(new Phrase("Qtde", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 8)));

                    PreparedStatement pstMedicos = con3.prepareStatement(""
                            + "select medicos.nome,medicos.crm,medicos.estado,medicos.status,COUNT(medicos.nome) as qtdePX "
                            + "from "
                            + "envio_item "
                            + "join medicos on envio_item.id_medico = medicos.id_medico "
                            + "where "
                            + "envio_item.data >= '" + data1 + "' and envio_item.data <= '" + data2 + "' "
                            + "and id_filial = '" + rsQtdeDeLojasDetalhe.getString(1) + "' and id_produto = '" + rsProdutos.getString(1) + "' "
                            + "group by medicos.nome,medicos.crm,medicos.estado,medicos.status order by qtdePX desc  ");
                    ResultSet rsMedicos = pstMedicos.executeQuery();
                    valorprogress = 4;
                    while (rsMedicos.next()) {

                        tableMedico.addCell(new Phrase(rsMedicos.getString(1), FontFactory.getFont(FontFactory.HELVETICA, 8)));
                        tableMedico.addCell(new Phrase(rsMedicos.getString(2), FontFactory.getFont(FontFactory.HELVETICA, 8)));
                        tableMedico.addCell(new Phrase(rsMedicos.getString(3), FontFactory.getFont(FontFactory.HELVETICA, 8)));
                        tableMedico.addCell(new Phrase(rsMedicos.getString(4), FontFactory.getFont(FontFactory.HELVETICA, 8)));
                        tableMedico.addCell(new Phrase(rsMedicos.getString(5), FontFactory.getFont(FontFactory.HELVETICA, 8)));


                    }
                    doc.add(tableMedico);
                    p = new Paragraph("", f);
             
                    
                }


            }
            
        }
        
        doc.close();
    }
}
